package cn.xbtop.blog.service.impl;

import cn.xbtop.blog.exception.BlogException;
import cn.xbtop.blog.mapper.TypeMapper;
import cn.xbtop.blog.pojo.Type;
import cn.xbtop.blog.service.TypeService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author Mxb
 * @version 1.0
 * @date 2020/2/19 15:48
 */
@Service
public class TypeServiceImpl implements TypeService {

    @Resource
    private TypeMapper typeMapper;

    /**
     * 通过id删除
     * @param typeId
     * @return
     */
    @Override
    public int deleteByPrimaryKey(Integer typeId) {
        return typeMapper.deleteByPrimaryKey(typeId);
    }

    /**
     * 保存分类
     *
     * @param type
     * @return
     */
    @Override
    public void insert(Type type) {
        // 分类名不能重复 查询分类是否存在
        Type type1 = typeMapper.findByName(type.getTypeName());
        if (type1 != null) {
            // 存在抛异常
            throw new BlogException("该分类已存在！");
        }
        type.setTypeBlogCount(0);
        type.setEnable(0);
        typeMapper.insert(type);
    }

    /**
     * 根据id查询
     * @param typeId
     * @return
     */
    @Override
    public Type selectByPrimaryKey(Integer typeId) {
        return typeMapper.selectByPrimaryKey(typeId);
    }

    /**
     * 修改
     * @param type
     * @return
     */
    @Override
    public int updateByPrimaryKey(Type type) {
        return typeMapper.updateByPrimaryKey(type);
    }

    /**
     * 后台查询所有分类
     * @return
     */
    @Override
    public List<Type> findAll() {
        return typeMapper.findAll();
    }

    /**
     * 前台查询所有分类
     * @return
     */
    @Override
    public List<Type> findlist() {
        return typeMapper.findList();
    }

    /**
     * 根据id，启用分类
     * @param id
     */
    @Override
    public void enableId(Integer id) {
        //查询
        Type type = typeMapper.selectByPrimaryKey(id);
        //type.setEnable(StateEnums.ENABLED.getCode());
        type.setEnable(1);
        typeMapper.updateByPrimaryKey(type);
    }

    /**
     * 根据id弃用
     * @param id
     */
    @Override
    public void disenableId(Integer id) {
        //查询
        Type type = typeMapper.selectByPrimaryKey(id);
        //type.setEnable(StateEnums.NOT_ENABLE.getCode());
        type.setEnable(0);
        typeMapper.updateByPrimaryKey(type);
    }


}
